#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e5 + 5;
pair<int, int> p[N]; 

auto compare = [](pair<int, int> p1, pair<int,int> p2){
	// 注意: 我们优先翻转的是 反转后能增加的值最大的, 而不是先翻转 值最大的, 应该是差值最大的
	return p1.second-p1.first < p2.second-p2.first; // 注意 优先级队列的这个比较规则是反着的
};

priority_queue<pair<int , int>, vector<pair<int, int>>, decltype(compare)> q(compare); 

signed main() {
	int n, k;
	cin >> n >> k;
	for (int i=1; i<=n;i++) {
		int x;
		cin >> x;
		p[i] = make_pair(x, 0);
	}
	
	for (int i=1; i<=n;i++) {
		int x;
		cin >> x;
		p[i].second = x;
	}
	
	// 把 pair 放到优先级队列中
	for (int i=1; i<=n;i++) {
		q.push(p[i]);
	}
	
	
	
	int ans = 0;
	int cnt = 0;
	while (!q.empty()) {
		pair<int, int> t = q.top();
		q.pop();
		int v = t.first; // 不能翻转的, 全部使用 正面, 不要忘记了
		if (t.first < t.second && cnt < k) {
			// 需要翻转
			v = t.second;
			cnt++;
		}
		ans += v;
	}
	cout << ans << '\n';
	return 0;
}
